// 引入Vue
import Vue from 'vue'
// 引入Vuex
import Vuex from 'vuex';

// 使用Vuex
Vue.use(Vuex);

// 准备actions对象 响应式组件中的动作
const actions = {
    oddAdd(context,val){
        if(context.state.num %2) context.commit('ADD',val);
    },
    addWait(context,val){
        setTimeout(() => {
            context.commit('ADD',val);
        }, 500);
    }
};
// 准备mutations对象 修改state中的数据
// mutations中配置的方法可接收两个参数
// 1. state   2. 从actions中传过来的实参val
// 一般在mutations中的方法都用大写，因为他们直接操作state，比较特殊的存在
// 最终的改变在这里处理
const mutations = {
    ADD(state,val){
        state.num += val;
    },
    CUT(state,val){
        state.num -= val;
    },
};
// 准备state对象 保存数据
const state = {
    num:0
};

// 创建并暴露Vuex
// 注意 new的是Vuex.Store 而不是 Vuex
export default new Vuex.Store({
    actions,
    mutations,
    state,
})